package com.wc.Dao;

import com.wc.FAKE.DB;
import com.wc.domain.Dept;
import com.wc.domain.Emp;
import com.wc.utils.Md5Util;


/**
 * @ClassName:EmpDaoImpl
 * @Author: 鹿建文
 * @Date: 2022/3/22  - 14:19
 * @Describe:
 */
public class EmpDaoImpl  implements EmpDao{
    private DeptDao deptDao= (DeptDao) new  DeptDaoImpl();


    @Override
    public boolean updateEmp(Emp emp) {
        for (int i = 0; i < DB.emps.size(); i++) {
                  Emp tmp=DB.emps.get(i);
            if (tmp.getEmpno().equals(emp.getEmpno())) {
                if (emp.getEname() != null) {
                    tmp.setEname(emp.getEname());
                }
                if (emp.getJob() != null) {
                    tmp.setJob(emp.getJob());
                }
                if (emp.getMgr() != null) {
                    tmp.setMgr(emp.getMgr());
                }
                if (emp.getSal() != null) {
                    tmp.setSal(emp.getSal());
                }
                if (emp.getComm() != null) {
                    tmp.setComm(emp.getComm());
                }
                if (emp.getDeptno() != null) {
                    tmp.setDeptno(emp.getDeptno());
                }
                if (emp.getAccount() != null) {
                    tmp.setAccount(emp.getAccount());
                }
                //重点
                if (emp.getPassword() != null) {
                    String salt = selectEmpByEmpNo(emp.getEmpno()).getSalt();
                    tmp.setPassword(Md5Util.encode(emp.getPassword(), salt));
                }
                if (emp.getRole() != null) {
                    tmp.setRole(emp.getRole());
                }
                return true;
            }
        }
        return false;
    }



    @Override
    public String getMd5SatltByUserEmpno(Integer empno) {
      for (Emp emp: DB.emps){
          if (emp.getEmpno().equals(empno)){
                return  emp.getSalt();
          }
      }
        return null;
    }

    @Override
    public Emp selectEmpByEmpNo(Integer empno) {
       for (Emp emp:DB.emps) {
           if (emp.getEmpno().equals(empno)){
               return  emp;
           }
       }return null;
    }

    @Override
    public Dept selectDeptByEmpno(Integer empno) {
        Emp emp = selectEmpByEmpNo(empno);
        if (emp!=null){
            Integer deptno = emp.getDeptno();
            Dept dept = deptDao.selectDeptByDeptno(deptno);
            return dept;
        }
        return null;

    }

    @Override
    public int selectEmpnoByAccount(String account) {
        for (Emp emp : DB.emps) {
            if (emp.getAccount().equals(account)){
                return emp.getEmpno();
            }
        }
        return -1;
    }
}
